<?php

namespace app\index\controller;

use think\Db;

class Category extends Common
{


    public function _initialize()
    {
        parent::_initialize();
    }

    /**
     * 添加分类 \n
     * URI : /category/add
     * @param :
     *  name      |  type  | null | description
     * -----------|--------|------|-------------
     *  sign      | string | 必填  | 签名
     *   level    | int    | 必填  | 分类等级
     *  type_name | string | 必填  | 类名
     *  parent_id | int    | 必填  | 父类id（第一级分类时为0）
     *
     * @return
     *    name      |  type   | description
     * -------------|---------|----------------------
     * -------------|-------- | -----------
     *
     */
    public function addCategory()
    {
        $level = $this->_getParams('level');
        if (!preg_match('/^[1-9]*$/', $level)) {
            $this->_returnError(20007, '级别错误');
        }

        $type_name = $this->_getParams('type_name');
        if (empty($type_name) === true) {
            $this->_returnError(20008, '类型名错误');
        }

        $parent_id = $this->_getParams('parent_id');
        if ($level == 1 && preg_match('/^[1-9]*$/', $parent_id)) {
            $this->_returnError(20009, '错误的父级');
        }

        $res = \think\Db::name('category')->insert([
            'level' => $level,
            'type_name' => $type_name,
            'parent_id' => $parent_id,
        ]);
        if ($res)
            $this->_returnData();
        $this->_returnError(20010, '分类添加失败');
    }


    /**
     * 添加分类 \n
     * URI : /category/list
     * @param :
     *  name      |  type  | null | description
     * -----------|--------|------|-------------
     *  sign      | string | 必填  | 签名
     *   level    | int    | 必填  | 分类等级
     *  parent_id | int    | 可选  | 父类id（第一级分类时为0）
     *
     * @return
     *    name      |  type   | description
     * -------------|---------|----------------------
     * type_name    |string   | 类名
     * level        |int      | 等级
     * cat_id       |int      | 类id
     */
    public function categoryList()
    {
        $level = $this->_getParams('level');
        if (!preg_match('/^[1-9]*$/', $level)) {
            $this->_returnError(20007, '级别错误');
        }

        $where['level'] = $level;

        $parent_id = $this->_getParams('level');
        if (preg_match('/^[1-9]*$/', $parent_id)) {
            $where['parent_id'] = $parent_id;
        }
        $list = \think\Db::name('category')->where(['parent_id' => $parent_id])->field('type_name,level,parent_id,cat_id')->find();
        $this->_returnData(['list' => $list]);
    }
}
